<?php
// Ecrit le 31/01/2014 par Jim

// Ce service web enregistre un nouveau membre
// et fournit un compte-rendu d'exécution

// Le service web doit être appelé avec 4 paramètres dont 2 sont obligatoires (adrMail et Nom) et 2 facultatifs (prenom et numTel) :
// Les paramètres peuvent être passés par la méthode GET (pratique pour les tests, mais à éviter en exploitation) :
//     http://jean.michel.cartron.free.fr/vouzetou/CreerMembre.php?adrMail=yves.zenels@gmail.com&nom=ZENELS&prenom=Yves&numTel=0611223344
// Les paramètres peuvent être passés par la méthode POST (à privilégier en exploitation pour la confidentialité des données) :
//     http://<hébergeur>/CreerMembre.php

// déclaration des variables globales pour pouvoir les utiliser aussi dans les fonctions
global $doc;		// le document XML à générer
global $adrMail, $mdpMembre, $nom, $prenom, $numTel;

// inclusion des paramètres et de la bibliothèque de fonctions ("include_once" peut être remplacé par "require_once")
include_once ('_inc_parametres.php');
include_once ('_inc_fonctions_boite_a_outils.php');

// crée une instance de DOMdocument 
$doc = new DOMDocument();

// specifie la version et le type d'encodage
$doc->version = '1.0';
$doc->encoding = 'ISO-8859-1';
  
// crée un commentaire et l'encode en ISO
$elt_commentaire = $doc->createComment('Service web CreerMembre - BTS SIO - Lycée De La Salle - Rennes');
// place ce commentaire à la racine du document XML
$doc->appendChild($elt_commentaire);
	
// Récupération des données transmises
// la fonction $_GET récupère une donnée passée en paramètre dans l'URL par la méthode GET
if ( empty ($_GET ["adrMail"]) == true)  $adrMail = "";  else   $adrMail = $_GET ["adrMail"];
if ( empty ($_GET ["nom"]) == true)  $nom = "";  else   $nom = $_GET ["nom"];
if ( empty ($_GET ["prenom"]) == true)  $prenom = "";  else   $prenom = $_GET ["prenom"];
if ( empty ($_GET ["numTel"]) == true)  $numTel = "";  else   $numTel = $_GET ["numTel"];
// si l'URL ne contient pas les données, on regarde si elles ont été envoyées par la méthode POST
// la fonction $_POST récupère une donnée envoyées par la méthode POST
if ( $adrMail == "" && $nom == "" && $prenom == "" && $numTel == "" )
{	if ( empty ($_POST ["adrMail"]) == true)  $adrMail = "";  else   $adrMail = $_POST ["adrMail"];
	if ( empty ($_POST ["nom"]) == true)  $nom = "";  else   $nom = $_POST ["nom"];
	if ( empty ($_POST ["prenom"]) == true)  $prenom = "";  else   $prenom = $_POST ["prenom"];
	if ( empty ($_POST ["numTel"]) == true)  $numTel = "";  else   $numTel = $_POST ["numTel"];
}
	
// Contrôle de la présence des paramètres
if ( $adrMail == "" || $nom == "" || estUneAdrMailValide ($adrMail) == false || estUnNumTelValide ($numTel) == false )
{	TraitementAnormal ("Erreur : données incomplètes ou incorrectes");
}
else
{	// connexion du serveur web à la base MySQL ("include_once" peut être remplacé par "require_once")
	include_once ('_inc_connexion.php');
	include_once ('_inc_fonctions_bdd_vouzetou.php');
	
	// amélioration de la forme de $numTel
	$numTel = corrigerTelephone($numTel);
	
	if ( existeMembre($adrMail) )
	{	// envoie un mail au membre pour lui rappeler son mot de passe
		envoyerMdp ($adrMail);
		TraitementAnormal("Erreur : votre adresse mail est déjà enregistrée ; un mail vous a été envoyé");
	}
	else
	{	// création d'un mot de passe aléatoire de 8 caractères
		$mdpMembre = creerMdp();
		// enregistre le membre dans la bdd
		$ok = enregistrerMembre ($adrMail, $mdpMembre, $nom, $prenom, $numTel);
		if ( ! $ok ) 
			TraitementAnormal("Erreur : problème lors de l'enregistrement du nouveau membre");
		else 
			TraitementNormal();
	}
	// ferme la connexion à MySQL :
	mysql_close ($cnx);
}
// Mise en forme finale   
$doc->formatOutput = true;  
// renvoie le contenu XML
echo $doc->saveXML();
// fin du programme
exit;


// fonction de traitement des cas anormaux
function TraitementAnormal($msg)
{	// redéclaration des données globales utilisées dans la fonction
	global $doc;
	// crée l'élément 'data' à la racine du document XML
	$elt_data = $doc->createElement('data');
	$doc->appendChild($elt_data);
	// place l'élément 'reponse' juste après l'élément 'data'
	$elt_reponse = $doc->createElement('reponse', $msg);
	$elt_data->appendChild($elt_reponse); 
	return;
}
 

// fonction de traitement des cas normaux
function TraitementNormal()
{	// redéclaration des données globales utilisées dans la fonction
	global $doc;
	global $adrMail, $mdpMembre, $nom, $prenom, $numTel;
	
	// envoie un mail de confirmation de l'enregistrement
	$sujet = "Confirmation de votre enregistrement au service Vouzetou?";
	$message = "Nous avons bien enregistré votre inscription au service Vouzetou? et nous vous en remercions.\n\n";
	$message .= "Rappel des données que vous nous avez indiquées :\n\n";
	$message .= "Votre adresse mail : " . $adrMail . "\n";
	$message .= "Votre mot de passe : " . $mdpMembre . " (nous vous conseillons de le changer lors de la première connexion)\n";
	$message .= "Votre nom ou pseudo : " . $nom . "\n";
	$message .= "Votre prénom : " . $prenom . "\n";
	$message .= "Votre téléphone : " . $numTel . "\n";
	$ok = envoyerMail ($adrMail, $sujet, $message);
	if ($ok)
		$msg = "Enregistrement effectué ; un mail vous a été envoyé avec votre mot de passe";
	else
		$msg = "Enregistrement effectué ; l'envoi du mail de confirmation a rencontré un problème";
		
	// crée l'élément 'data' à la racine du document XML
	$elt_data = $doc->createElement('data');
	$doc->appendChild($elt_data);
	// place l'élément 'reponse' juste après l'élément 'data'
	$elt_reponse = $doc->createElement('reponse', $msg);
	$elt_data->appendChild($elt_reponse); 
	return;
}
?>
